Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Simulación de sistemas (página 2)




Enviado por dataunix



Partes: 1, 2

//Inicializando variables
locales

int i=0;

char ord[20];

//Obteniendo m xima resolución
posible

xmax=getmaxx();

ymax=getmaxy();

//Creando ejes de coodernadas

line(20,0,20,ymax-20);//ejes de las x

line(20,ymax-20,xmax,ymax-20); //ejes de las
y

for (i=1;i<=20;i++) //numerando ejes
cartesianos

{

sprintf(ord,"%d",i*3);

outtextxy((i*30)+20,ymax-20,ord); //ejes x

outtextxy(5,ymax-(i*30)-20,ord); //ejes y

outtextxy(xmax-100,30,"Escala
1:10");

};

}

void ejes::cuadricula()

{

int i=0,j=0;

for (i=1;i<=34;i++)

{

line(20,(ymax-20)-(i*10),xmax,(ymax-20)-(i*10));
//filas

};

for (j=1;j<=65;j++)

{

line(20+(j*10),ymax-20,20+(j*10),120);
//columnas

};

}

class parabola

{

public:void graftiro(float ang,float vel);

};

void parabola::graftiro(float ang, float vel)
//ángulo y velocidad

{

//Inicializando variables para el
cálculo

const g=9.8; //gravedad terrestre

double x=0,y=0,t=0,stop=1;

char ord[20];

for (t=1;stop!=0; t++)

{

//formulas para el movimiento
vertical y horizontal

//en funcián del tiempo
respectivamente

y=(vel*sin(ang*M_PI/180)*t/30)-(g*0.5*pow(t/30,2));

//g es la aceleración de la gravedad

x=(vel*cos(ang*M_PI/180)*t/30);

moveto(((x+20)),(ymax-20-y));

putpixel(getx(), gety(), getmaxcolor());

if (t<1000) //esto no puede durar mas de 10
segundos

{ //control de pausa
por si la cosa se alarga

delay(10);

};

if (gety()>=ymax-20)

{

stop=0;

outtextxy(xmax-280,40,"Sumario");

sprintf(ord,"Tiempo %f segundos",t/30);

outtextxy(xmax-280,60,ord);

sprintf(ord,"Distancia %f
metros",vel*cos(ang*M_PI/180)*t/30);

outtextxy(xmax-280,80,ord);

sprintf(ord,"Altura máxima %f
metros",pow(vel*sin(ang*M_PI/180),2)/(2*g));

outtextxy(xmax-280,100,ord);

};

};

}

void main()

{

video objvideo; //instanciando
objetos

ejes objejes;

parabola grafica;

objvideo.inicializar();

cout<<" Simulaci¢n de tiro
parab¢lico"<<"n";

cout<<" Desarrollado por Luis Alberto De
Jesús"<<"n";

cout<<" 19/11/07"<<"n";

cout<<" Digite una opción para
continuar";

char inf,inf1;

gotoxy(2,6);

cout<<"Cuadricular s/n ?"; //por si queremos
cuadricular

inf1=getche();

double a,v;

inicio: //etiqueta de referencia

objejes.dibujar();

if ((inf1=='s')||(inf1=='S')) // si se eligio s
cuadriculamos

{

objejes.cuadricula();

}

outtextxy(30,20,"Digite el  ngulo de tiro:
");

gotoxy(30,2);cin>>a;

if ((a<0)||(a>90)) //control del angulo de
tiro

{

cout.width(20);

cout<<"Entrada inv lida";

getche();

goto inicio; //si es menor que 0 o mayor de 90 ir a
inicio

}

outtextxy(30,35,"Digite la velocidad de
tiro en m/seg: ");

gotoxy(42,3);cin>>v;

grafica.graftiro(a,v);//grados y velocidad

outtextxy(30,50,"Desea terminar la simulación
s/n? ");

gotoxy(40,4);

inf=getche();

if ((inf=='s')||(inf=='S')) //por si queremos repetir la
simulación o terminar

{

goto fin;

}

else

{

goto inicio;

}

fin: //etiqueta de referencia

objvideo.finalizar(); //liberando la memoria

}

Veamos ahora el aspecto en pantalla

Presionamos s para ver la simulación en
cuadrícula. Cualquier tecla por si no.

Digitamos un ángulo, por ejemplo 56

Pulsamos intro y digitamos una velocidad inicial, 65 por
ejemplo y pulsamos intro.

Si digitamos s salimos del simulador y si presionamos
cualquier tecla realizamos otra simulación.

Hasta otra próxima monografía.

 

Luís Alberto De Jesús

Santo Domingo República Dominicana.

23/11/2007

 

 

Autor:

dataunix[arroba]hotmail.com

Programa que simula el lanzamiento de un proyectil dado
su  ángulo

y velocidad inicial tomando como base las
fórmulas referentes al tiro parabólico

*/

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <iostream.h>

#include <dos.h>

#include <string.h>

double xmax=0, ymax=0;

//variables
globales, obtienen resolución máxima

class video

{

public: void inicializar();

public: void finalizar();

};

void video::inicializar()

{

//solicitando autodetección del driver de
gráficos

int gdriver = DETECT, gmode, errorcode;

//Inicializando driver de gr ficos y variables
locales

initgraph(&gdriver, &gmode,
"c:\tc\bgi");

//no olvidar especificar ruta de las librerias de
gráficos

//verificando errores

errorcode = graphresult();

if (errorcode != grOk) //ocurri¢ un
error?

{

grapherrormsg(errorcode);

cout<<"Error de video:
"<<errorcode;

cout<<"Presionar cualquier tecla: ";

getch();

exit(1); //Termina si hay un error

};

}

void video::finalizar()

{

closegraph(); //proceso de
limpieza

}

class ejes

{

public: void dibujar();

public: void cuadricula();

};

void ejes::dibujar()

{

cleardevice();//limpia la pantalla

setcolor(EGA_YELLOW);

setbkcolor(EGA_BLUE);

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter